package meta

import (
	"fmt"
	"monitor_serve/service"
)

// FileMeta 文件元信息结构
type FileMeta struct {
	FileSha1 string //通过fileSha1来检查文件是否已经存在
	FileName string
	FileSize int64
	Location string
	UploadAt string
}

var fileMetas map[string]FileMeta

func init() {
	fileMetas = make(map[string]FileMeta)
}

// UpdateFileMeta 新增/更新文件元信息
func UpdateFileMeta(fmeta FileMeta) {
	fileMetas[fmeta.FileSha1] = fmeta
}

// GetFileMeta 通过文件哈希获取文件元信息
func GetFileMeta(fileSha1 string) FileMeta {
	return fileMetas[fileSha1]
}

// GetLastFileMetas 获取最近上传的文件元信息
//func GetLastFileMetas(count int) []FileMeta {
//
//	fMetaArray := make([]FileMeta, len(fileMetas))
//	for _, v := range fileMetas {
//		fMetaArray = append(fMetaArray, v)
//	}
//	sort.Sort(ByUploadTime(fMetaArray))
//	return fMetaArray[0:count]
//}
//func ByUploadTime(fMetaArray []FileMeta) ByUploadTime {
//	return ByUploadTime(fMetaArray)
//}

// RemoveFileMeta 删除文件元信息
func RemoveFileMeta(fileSha1 string) {
	delete(fileMetas, fileSha1)
}

// UpdateFileMetaDB 新增文件元信息到数据库
func UpdateFileMetaDB(fmeta FileMeta) bool {
	err := service.ServiceGroupApp.FileService.OnFileUploadFinished(fmeta.FileSha1, fmeta.FileName, fmeta.FileSize, fmeta.Location)
	if err != nil {
		fmt.Println(err)
		return false
	}
	return true
}
